package controladores;

import java.util.ArrayList;
import java.util.List;

import modelo.Mineral;
import modelo.Model;
import modelo.vista.LoteSimpleView;
import modelo.vista.MineralLoteView;
import modelo.vista.PropietarioView;

import org.jdesktop.observablecollections.ObservableCollections;

public class AdministrateLotesControlador extends AbstractControlador {

	private Model model = Model.getInstance();
	private List<LoteSimpleView> lotesView =  ObservableCollections.observableList(new ArrayList<LoteSimpleView>());
	LoteSimpleView loteSimpleView = new LoteSimpleView();
	
	public AdministrateLotesControlador() {
		super();
		lotesView.add(loteSimpleView);
	}
	
	public List<LoteSimpleView> getLotesView() {
		return lotesView;
	}

	
	public void altaLoteSimple(LoteSimpleView sl) {
		try {
			if (!model.existeLote(sl))
				model.altaLoteSimple(sl);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		lotesView.remove(0);
		this.loteSimpleView = new LoteSimpleView();
		lotesView.add(0, loteSimpleView);
	}

	public void bajaLote() {
		try {
			if (model.existeLote(lotesView.get(0)))
				model.bajaLoteSimple(lotesView.get(0));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		lotesView.remove(0);
		this.loteSimpleView = new LoteSimpleView();
		lotesView.add(0, loteSimpleView);
	}
	
	public LoteSimpleView buscarConNumero(int nrLote) {
		return model.buscarLoteSimple(nrLote);
	}

	public PropietarioView buscarPropietarioPorDNI(String text) {
		return model.buscarPropietarioPorDNI(text);
	}

	public void agregarLoteMineral(MineralLoteView mineralView) {
		if(!existeMineralEnLote(mineralView.getMineral())){
			lotesView.get(0).getMinerales().add(mineralView);
		}
		
	}

	public void eliminarLoteMineral(Mineral mineral) {
		if(existeMineralEnLote(mineral)){
			for(int i = 0; i < this.lotesView.get(0).getMinerales().size(); i++){
				if(this.lotesView.get(0).getMinerales().get(i).getMineral().equals(mineral)){
					this.lotesView.get(0).getMinerales().remove(i);
				}
			}
		}
	}

	private boolean existeMineralEnLote(Mineral mineral) {
		// TODO Auto-generated method stub
		return false;
	}

	public void modificarLoteSimple() {
		try {
			if (model.existeLote(lotesView.get(0)))
				model.modificarLoteSimple(lotesView.get(0));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		lotesView.remove(0);
		this.loteSimpleView = new LoteSimpleView();
		lotesView.add(0, loteSimpleView);
	}


}
